(0) Obligation:

Clauses:

tautology(F) :- reduce(sequent([], .(F, [])), sequent([], [])).
reduce(sequent(.(if(A, B), Fs), Gs), NF) :- reduce(sequent(.(+(-(B), A), Fs), Gs), NF).
reduce(sequent(.(iff(A, B), Fs), Gs), NF) :- reduce(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF).
reduce(sequent(.(*(F1, F2), Fs), Gs), NF) :- reduce(sequent(.(F1, .(F2, Fs)), Gs), NF).
reduce(sequent(.(+(F1, F2), Fs), Gs), NF) :- ','(reduce(sequent(.(F1, Fs), Gs), NF), reduce(sequent(.(F2, Fs), Gs), NF)).
reduce(sequent(.(-(F1), Fs), Gs), NF) :- reduce(sequent(Fs, .(F1, Gs)), NF).
reduce(sequent(Fs, .(if(A, B), Gs)), NF) :- reduce(sequent(Fs, .(+(-(B), A), Gs)), NF).
reduce(sequent(Fs, .(iff(A, B), Gs)), NF) :- reduce(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF).
reduce(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) :- reduce(sequent(Fs, Gs), sequent(.(p(V), Left), Right)).
reduce(sequent(Fs, .(+(G1, G2), Gs)), NF) :- reduce(sequent(Fs, .(G1, .(G2, Gs))), NF).
reduce(sequent(Fs, .(*(G1, G2), Gs)), NF) :- ','(reduce(sequent(Fs, .(G1, Gs)), NF), reduce(sequent(Fs, .(G2, Gs)), NF)).
reduce(sequent(Fs, .(-(G1), Gs)), NF) :- reduce(sequent(.(G1, Fs), Gs), NF).
reduce(sequent([], .(p(V), Gs)), sequent(Left, Right)) :- reduce(sequent([], Gs), sequent(Left, .(p(V), Right))).
reduce(sequent([], []), sequent(F1, F2)) :- intersect(F1, F2).
intersect(.(X, X1), .(X, X2)).
intersect(Xs, .(X3, Ys)) :- intersect(Xs, Ys).
intersect(.(X4, Xs), Ys) :- intersect(Xs, Ys).
yes1 :- tautology(+(-(p(1)), p(1))).
yes2 :- tautology(*(+(-(p(1)), p(1)), +(p(1), -(p(1))))).
yes3 :- tautology(*(+(-(-(-(p(1)))), p(1)), +(-(-(p(1))), -(p(1))))).
yes4 :- tautology(-(-(','(p(1), *), p(1)))).
no1 :- tautology(-(','(p(1), *), p(1))).
no2 :- tautology(+(-(+(p(1), -(p(1)))), p(2))).
no3 :- tautology(*(+(-(+(-(p(1)), +(-(p(2)), p(3)))), +(-(+(p(1), p(2))), p(3))), +(-(p(1)), +(+(-(p(2)), p(3)), -(+(-(+(p(1), p(2))), p(3))))))).
no4 :- tautology(+(-(+(*(p(1), *(p(2), p(3))), -(','(-(p(1)), *), -(','(p(2), *), p(3))))), *(+(-(p(1)), *(+(-(p(2)), p(3)), +(p(2), -(p(3))))), +(p(1), -(*(+(-(p(2)), p(3)), +(p(2), -(p(3))))))))).

Query: tautology(g)

(1) PrologToPiTRSProof (SOUND transformation)

We use the technique of [TOCL09]. With regard to the inferred argument filtering the predicates were used in the following modes:
tautology_in: (b)
reduce_in: (b,b)
intersect_in: (b,b)
Transforming Prolog into the following Term Rewriting System:
Pi-finite rewrite system:
The TRS R consists of the following rules:

tautology_in_g(F) → U1_g(F, reduce_in_gg(sequent([], .(F, [])), sequent([], [])))
reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(F1, Fs, Gs, NF, reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(V, Fs, Gs, Left, Right, reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(Fs, G1, Gs, NF, reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(V, Gs, Left, Right, reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(F1, F2, intersect_in_gg(F1, F2))
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg(.(X, X1), .(X, X2))
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(Xs, X3, Ys, intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(X4, Xs, Ys, intersect_in_gg(Xs, Ys))
U18_gg(X4, Xs, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(.(X4, Xs), Ys)
U17_gg(Xs, X3, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(Xs, .(X3, Ys))
U16_gg(F1, F2, intersect_out_gg(F1, F2)) → reduce_out_gg(sequent([], []), sequent(F1, F2))
U15_gg(V, Gs, Left, Right, reduce_out_gg(sequent([], Gs), sequent(Left, .(p(V), Right)))) → reduce_out_gg(sequent([], .(p(V), Gs)), sequent(Left, Right))
U14_gg(Fs, G1, Gs, NF, reduce_out_gg(sequent(.(G1, Fs), Gs), NF)) → reduce_out_gg(sequent(Fs, .(-(G1), Gs)), NF)
U12_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → U13_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U13_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G2, Gs)), NF)) → reduce_out_gg(sequent(Fs, .(*(G1, G2), Gs)), NF)
U11_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, .(G2, Gs))), NF)) → reduce_out_gg(sequent(Fs, .(+(G1, G2), Gs)), NF)
U10_gg(V, Fs, Gs, Left, Right, reduce_out_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right))) → reduce_out_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right))
U9_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(iff(A, B), Gs)), NF)
U8_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(+(-(B), A), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(if(A, B), Gs)), NF)
U7_gg(F1, Fs, Gs, NF, reduce_out_gg(sequent(Fs, .(F1, Gs)), NF)) → reduce_out_gg(sequent(.(-(F1), Fs), Gs), NF)
U5_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → U6_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U6_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F2, Fs), Gs), NF)) → reduce_out_gg(sequent(.(+(F1, F2), Fs), Gs), NF)
U4_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, .(F2, Fs)), Gs), NF)) → reduce_out_gg(sequent(.(*(F1, F2), Fs), Gs), NF)
U3_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)) → reduce_out_gg(sequent(.(iff(A, B), Fs), Gs), NF)
U2_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(+(-(B), A), Fs), Gs), NF)) → reduce_out_gg(sequent(.(if(A, B), Fs), Gs), NF)
U1_g(F, reduce_out_gg(sequent([], .(F, [])), sequent([], []))) → tautology_out_g(F)

The argument filtering Pi contains the following mapping:
tautology_in_g(x1)  =  tautology_in_g(x1)
U1_g(x1, x2)  =  U1_g(x2)
reduce_in_gg(x1, x2)  =  reduce_in_gg(x1, x2)
sequent(x1, x2)  =  sequent(x1, x2)
.(x1, x2)  =  .(x1, x2)
if(x1, x2)  =  if(x1, x2)
U2_gg(x1, x2, x3, x4, x5, x6)  =  U2_gg(x6)
iff(x1, x2)  =  iff(x1, x2)
U3_gg(x1, x2, x3, x4, x5, x6)  =  U3_gg(x6)
*(x1, x2)  =  *(x1, x2)
U4_gg(x1, x2, x3, x4, x5, x6)  =  U4_gg(x6)
+(x1, x2)  =  +(x1, x2)
U5_gg(x1, x2, x3, x4, x5, x6)  =  U5_gg(x2, x3, x4, x5, x6)
-(x1)  =  -(x1)
U7_gg(x1, x2, x3, x4, x5)  =  U7_gg(x5)
U8_gg(x1, x2, x3, x4, x5, x6)  =  U8_gg(x6)
U9_gg(x1, x2, x3, x4, x5, x6)  =  U9_gg(x6)
p(x1)  =  p(x1)
U10_gg(x1, x2, x3, x4, x5, x6)  =  U10_gg(x6)
U11_gg(x1, x2, x3, x4, x5, x6)  =  U11_gg(x6)
U12_gg(x1, x2, x3, x4, x5, x6)  =  U12_gg(x1, x3, x4, x5, x6)
U14_gg(x1, x2, x3, x4, x5)  =  U14_gg(x5)
[]  =  []
U15_gg(x1, x2, x3, x4, x5)  =  U15_gg(x5)
U16_gg(x1, x2, x3)  =  U16_gg(x3)
intersect_in_gg(x1, x2)  =  intersect_in_gg(x1, x2)
intersect_out_gg(x1, x2)  =  intersect_out_gg
U17_gg(x1, x2, x3, x4)  =  U17_gg(x4)
U18_gg(x1, x2, x3, x4)  =  U18_gg(x4)
reduce_out_gg(x1, x2)  =  reduce_out_gg
U13_gg(x1, x2, x3, x4, x5, x6)  =  U13_gg(x6)
U6_gg(x1, x2, x3, x4, x5, x6)  =  U6_gg(x6)
tautology_out_g(x1)  =  tautology_out_g

Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog

(2) Obligation:

Pi-finite rewrite system:
The TRS R consists of the following rules:

tautology_in_g(F) → U1_g(F, reduce_in_gg(sequent([], .(F, [])), sequent([], [])))
reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(F1, Fs, Gs, NF, reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(V, Fs, Gs, Left, Right, reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(Fs, G1, Gs, NF, reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(V, Gs, Left, Right, reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(F1, F2, intersect_in_gg(F1, F2))
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg(.(X, X1), .(X, X2))
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(Xs, X3, Ys, intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(X4, Xs, Ys, intersect_in_gg(Xs, Ys))
U18_gg(X4, Xs, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(.(X4, Xs), Ys)
U17_gg(Xs, X3, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(Xs, .(X3, Ys))
U16_gg(F1, F2, intersect_out_gg(F1, F2)) → reduce_out_gg(sequent([], []), sequent(F1, F2))
U15_gg(V, Gs, Left, Right, reduce_out_gg(sequent([], Gs), sequent(Left, .(p(V), Right)))) → reduce_out_gg(sequent([], .(p(V), Gs)), sequent(Left, Right))
U14_gg(Fs, G1, Gs, NF, reduce_out_gg(sequent(.(G1, Fs), Gs), NF)) → reduce_out_gg(sequent(Fs, .(-(G1), Gs)), NF)
U12_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → U13_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U13_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G2, Gs)), NF)) → reduce_out_gg(sequent(Fs, .(*(G1, G2), Gs)), NF)
U11_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, .(G2, Gs))), NF)) → reduce_out_gg(sequent(Fs, .(+(G1, G2), Gs)), NF)
U10_gg(V, Fs, Gs, Left, Right, reduce_out_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right))) → reduce_out_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right))
U9_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(iff(A, B), Gs)), NF)
U8_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(+(-(B), A), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(if(A, B), Gs)), NF)
U7_gg(F1, Fs, Gs, NF, reduce_out_gg(sequent(Fs, .(F1, Gs)), NF)) → reduce_out_gg(sequent(.(-(F1), Fs), Gs), NF)
U5_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → U6_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U6_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F2, Fs), Gs), NF)) → reduce_out_gg(sequent(.(+(F1, F2), Fs), Gs), NF)
U4_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, .(F2, Fs)), Gs), NF)) → reduce_out_gg(sequent(.(*(F1, F2), Fs), Gs), NF)
U3_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)) → reduce_out_gg(sequent(.(iff(A, B), Fs), Gs), NF)
U2_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(+(-(B), A), Fs), Gs), NF)) → reduce_out_gg(sequent(.(if(A, B), Fs), Gs), NF)
U1_g(F, reduce_out_gg(sequent([], .(F, [])), sequent([], []))) → tautology_out_g(F)

The argument filtering Pi contains the following mapping:
tautology_in_g(x1)  =  tautology_in_g(x1)
U1_g(x1, x2)  =  U1_g(x2)
reduce_in_gg(x1, x2)  =  reduce_in_gg(x1, x2)
sequent(x1, x2)  =  sequent(x1, x2)
.(x1, x2)  =  .(x1, x2)
if(x1, x2)  =  if(x1, x2)
U2_gg(x1, x2, x3, x4, x5, x6)  =  U2_gg(x6)
iff(x1, x2)  =  iff(x1, x2)
U3_gg(x1, x2, x3, x4, x5, x6)  =  U3_gg(x6)
*(x1, x2)  =  *(x1, x2)
U4_gg(x1, x2, x3, x4, x5, x6)  =  U4_gg(x6)
+(x1, x2)  =  +(x1, x2)
U5_gg(x1, x2, x3, x4, x5, x6)  =  U5_gg(x2, x3, x4, x5, x6)
-(x1)  =  -(x1)
U7_gg(x1, x2, x3, x4, x5)  =  U7_gg(x5)
U8_gg(x1, x2, x3, x4, x5, x6)  =  U8_gg(x6)
U9_gg(x1, x2, x3, x4, x5, x6)  =  U9_gg(x6)
p(x1)  =  p(x1)
U10_gg(x1, x2, x3, x4, x5, x6)  =  U10_gg(x6)
U11_gg(x1, x2, x3, x4, x5, x6)  =  U11_gg(x6)
U12_gg(x1, x2, x3, x4, x5, x6)  =  U12_gg(x1, x3, x4, x5, x6)
U14_gg(x1, x2, x3, x4, x5)  =  U14_gg(x5)
[]  =  []
U15_gg(x1, x2, x3, x4, x5)  =  U15_gg(x5)
U16_gg(x1, x2, x3)  =  U16_gg(x3)
intersect_in_gg(x1, x2)  =  intersect_in_gg(x1, x2)
intersect_out_gg(x1, x2)  =  intersect_out_gg
U17_gg(x1, x2, x3, x4)  =  U17_gg(x4)
U18_gg(x1, x2, x3, x4)  =  U18_gg(x4)
reduce_out_gg(x1, x2)  =  reduce_out_gg
U13_gg(x1, x2, x3, x4, x5, x6)  =  U13_gg(x6)
U6_gg(x1, x2, x3, x4, x5, x6)  =  U6_gg(x6)
tautology_out_g(x1)  =  tautology_out_g

(3) DependencyPairsProof (EQUIVALENT transformation)

Using Dependency Pairs [AG00,LOPSTR] we result in the following initial DP problem:
Pi DP problem:
The TRS P consists of the following rules:

TAUTOLOGY_IN_G(F) → U1_G(F, reduce_in_gg(sequent([], .(F, [])), sequent([], [])))
TAUTOLOGY_IN_G(F) → REDUCE_IN_GG(sequent([], .(F, [])), sequent([], []))
REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → U2_GG(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(iff(A, B), Fs), Gs), NF) → U3_GG(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
REDUCE_IN_GG(sequent(.(iff(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_GG(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
REDUCE_IN_GG(sequent(.(*(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, .(F2, Fs)), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(-(F1), Fs), Gs), NF) → U7_GG(F1, Fs, Gs, NF, reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
REDUCE_IN_GG(sequent(.(-(F1), Fs), Gs), NF) → REDUCE_IN_GG(sequent(Fs, .(F1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → U8_GG(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(+(-(B), A), Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_GG(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
REDUCE_IN_GG(sequent(Fs, .(iff(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)
REDUCE_IN_GG(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_GG(V, Fs, Gs, Left, Right, reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
REDUCE_IN_GG(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → REDUCE_IN_GG(sequent(Fs, Gs), sequent(.(p(V), Left), Right))
REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_GG(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, .(G2, Gs))), NF)
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_GG(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(-(G1), Gs)), NF) → U14_GG(Fs, G1, Gs, NF, reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
REDUCE_IN_GG(sequent(Fs, .(-(G1), Gs)), NF) → REDUCE_IN_GG(sequent(.(G1, Fs), Gs), NF)
REDUCE_IN_GG(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_GG(V, Gs, Left, Right, reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
REDUCE_IN_GG(sequent([], .(p(V), Gs)), sequent(Left, Right)) → REDUCE_IN_GG(sequent([], Gs), sequent(Left, .(p(V), Right)))
REDUCE_IN_GG(sequent([], []), sequent(F1, F2)) → U16_GG(F1, F2, intersect_in_gg(F1, F2))
REDUCE_IN_GG(sequent([], []), sequent(F1, F2)) → INTERSECT_IN_GG(F1, F2)
INTERSECT_IN_GG(Xs, .(X3, Ys)) → U17_GG(Xs, X3, Ys, intersect_in_gg(Xs, Ys))
INTERSECT_IN_GG(Xs, .(X3, Ys)) → INTERSECT_IN_GG(Xs, Ys)
INTERSECT_IN_GG(.(X4, Xs), Ys) → U18_GG(X4, Xs, Ys, intersect_in_gg(Xs, Ys))
INTERSECT_IN_GG(.(X4, Xs), Ys) → INTERSECT_IN_GG(Xs, Ys)
U12_GG(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → U13_GG(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U12_GG(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → REDUCE_IN_GG(sequent(Fs, .(G2, Gs)), NF)
U5_GG(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → U6_GG(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U5_GG(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)

The TRS R consists of the following rules:

tautology_in_g(F) → U1_g(F, reduce_in_gg(sequent([], .(F, [])), sequent([], [])))
reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(F1, Fs, Gs, NF, reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(V, Fs, Gs, Left, Right, reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(Fs, G1, Gs, NF, reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(V, Gs, Left, Right, reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(F1, F2, intersect_in_gg(F1, F2))
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg(.(X, X1), .(X, X2))
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(Xs, X3, Ys, intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(X4, Xs, Ys, intersect_in_gg(Xs, Ys))
U18_gg(X4, Xs, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(.(X4, Xs), Ys)
U17_gg(Xs, X3, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(Xs, .(X3, Ys))
U16_gg(F1, F2, intersect_out_gg(F1, F2)) → reduce_out_gg(sequent([], []), sequent(F1, F2))
U15_gg(V, Gs, Left, Right, reduce_out_gg(sequent([], Gs), sequent(Left, .(p(V), Right)))) → reduce_out_gg(sequent([], .(p(V), Gs)), sequent(Left, Right))
U14_gg(Fs, G1, Gs, NF, reduce_out_gg(sequent(.(G1, Fs), Gs), NF)) → reduce_out_gg(sequent(Fs, .(-(G1), Gs)), NF)
U12_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → U13_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U13_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G2, Gs)), NF)) → reduce_out_gg(sequent(Fs, .(*(G1, G2), Gs)), NF)
U11_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, .(G2, Gs))), NF)) → reduce_out_gg(sequent(Fs, .(+(G1, G2), Gs)), NF)
U10_gg(V, Fs, Gs, Left, Right, reduce_out_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right))) → reduce_out_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right))
U9_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(iff(A, B), Gs)), NF)
U8_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(+(-(B), A), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(if(A, B), Gs)), NF)
U7_gg(F1, Fs, Gs, NF, reduce_out_gg(sequent(Fs, .(F1, Gs)), NF)) → reduce_out_gg(sequent(.(-(F1), Fs), Gs), NF)
U5_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → U6_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U6_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F2, Fs), Gs), NF)) → reduce_out_gg(sequent(.(+(F1, F2), Fs), Gs), NF)
U4_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, .(F2, Fs)), Gs), NF)) → reduce_out_gg(sequent(.(*(F1, F2), Fs), Gs), NF)
U3_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)) → reduce_out_gg(sequent(.(iff(A, B), Fs), Gs), NF)
U2_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(+(-(B), A), Fs), Gs), NF)) → reduce_out_gg(sequent(.(if(A, B), Fs), Gs), NF)
U1_g(F, reduce_out_gg(sequent([], .(F, [])), sequent([], []))) → tautology_out_g(F)

The argument filtering Pi contains the following mapping:
tautology_in_g(x1)  =  tautology_in_g(x1)
U1_g(x1, x2)  =  U1_g(x2)
reduce_in_gg(x1, x2)  =  reduce_in_gg(x1, x2)
sequent(x1, x2)  =  sequent(x1, x2)
.(x1, x2)  =  .(x1, x2)
if(x1, x2)  =  if(x1, x2)
U2_gg(x1, x2, x3, x4, x5, x6)  =  U2_gg(x6)
iff(x1, x2)  =  iff(x1, x2)
U3_gg(x1, x2, x3, x4, x5, x6)  =  U3_gg(x6)
*(x1, x2)  =  *(x1, x2)
U4_gg(x1, x2, x3, x4, x5, x6)  =  U4_gg(x6)
+(x1, x2)  =  +(x1, x2)
U5_gg(x1, x2, x3, x4, x5, x6)  =  U5_gg(x2, x3, x4, x5, x6)
-(x1)  =  -(x1)
U7_gg(x1, x2, x3, x4, x5)  =  U7_gg(x5)
U8_gg(x1, x2, x3, x4, x5, x6)  =  U8_gg(x6)
U9_gg(x1, x2, x3, x4, x5, x6)  =  U9_gg(x6)
p(x1)  =  p(x1)
U10_gg(x1, x2, x3, x4, x5, x6)  =  U10_gg(x6)
U11_gg(x1, x2, x3, x4, x5, x6)  =  U11_gg(x6)
U12_gg(x1, x2, x3, x4, x5, x6)  =  U12_gg(x1, x3, x4, x5, x6)
U14_gg(x1, x2, x3, x4, x5)  =  U14_gg(x5)
[]  =  []
U15_gg(x1, x2, x3, x4, x5)  =  U15_gg(x5)
U16_gg(x1, x2, x3)  =  U16_gg(x3)
intersect_in_gg(x1, x2)  =  intersect_in_gg(x1, x2)
intersect_out_gg(x1, x2)  =  intersect_out_gg
U17_gg(x1, x2, x3, x4)  =  U17_gg(x4)
U18_gg(x1, x2, x3, x4)  =  U18_gg(x4)
reduce_out_gg(x1, x2)  =  reduce_out_gg
U13_gg(x1, x2, x3, x4, x5, x6)  =  U13_gg(x6)
U6_gg(x1, x2, x3, x4, x5, x6)  =  U6_gg(x6)
tautology_out_g(x1)  =  tautology_out_g
TAUTOLOGY_IN_G(x1)  =  TAUTOLOGY_IN_G(x1)
U1_G(x1, x2)  =  U1_G(x2)
REDUCE_IN_GG(x1, x2)  =  REDUCE_IN_GG(x1, x2)
U2_GG(x1, x2, x3, x4, x5, x6)  =  U2_GG(x6)
U3_GG(x1, x2, x3, x4, x5, x6)  =  U3_GG(x6)
U4_GG(x1, x2, x3, x4, x5, x6)  =  U4_GG(x6)
U5_GG(x1, x2, x3, x4, x5, x6)  =  U5_GG(x2, x3, x4, x5, x6)
U7_GG(x1, x2, x3, x4, x5)  =  U7_GG(x5)
U8_GG(x1, x2, x3, x4, x5, x6)  =  U8_GG(x6)
U9_GG(x1, x2, x3, x4, x5, x6)  =  U9_GG(x6)
U10_GG(x1, x2, x3, x4, x5, x6)  =  U10_GG(x6)
U11_GG(x1, x2, x3, x4, x5, x6)  =  U11_GG(x6)
U12_GG(x1, x2, x3, x4, x5, x6)  =  U12_GG(x1, x3, x4, x5, x6)
U14_GG(x1, x2, x3, x4, x5)  =  U14_GG(x5)
U15_GG(x1, x2, x3, x4, x5)  =  U15_GG(x5)
U16_GG(x1, x2, x3)  =  U16_GG(x3)
INTERSECT_IN_GG(x1, x2)  =  INTERSECT_IN_GG(x1, x2)
U17_GG(x1, x2, x3, x4)  =  U17_GG(x4)
U18_GG(x1, x2, x3, x4)  =  U18_GG(x4)
U13_GG(x1, x2, x3, x4, x5, x6)  =  U13_GG(x6)
U6_GG(x1, x2, x3, x4, x5, x6)  =  U6_GG(x6)

We have to consider all (P,R,Pi)-chains

(4) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

TAUTOLOGY_IN_G(F) → U1_G(F, reduce_in_gg(sequent([], .(F, [])), sequent([], [])))
TAUTOLOGY_IN_G(F) → REDUCE_IN_GG(sequent([], .(F, [])), sequent([], []))
REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → U2_GG(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(iff(A, B), Fs), Gs), NF) → U3_GG(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
REDUCE_IN_GG(sequent(.(iff(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_GG(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
REDUCE_IN_GG(sequent(.(*(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, .(F2, Fs)), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(-(F1), Fs), Gs), NF) → U7_GG(F1, Fs, Gs, NF, reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
REDUCE_IN_GG(sequent(.(-(F1), Fs), Gs), NF) → REDUCE_IN_GG(sequent(Fs, .(F1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → U8_GG(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(+(-(B), A), Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_GG(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
REDUCE_IN_GG(sequent(Fs, .(iff(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)
REDUCE_IN_GG(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_GG(V, Fs, Gs, Left, Right, reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
REDUCE_IN_GG(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → REDUCE_IN_GG(sequent(Fs, Gs), sequent(.(p(V), Left), Right))
REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_GG(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, .(G2, Gs))), NF)
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_GG(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(-(G1), Gs)), NF) → U14_GG(Fs, G1, Gs, NF, reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
REDUCE_IN_GG(sequent(Fs, .(-(G1), Gs)), NF) → REDUCE_IN_GG(sequent(.(G1, Fs), Gs), NF)
REDUCE_IN_GG(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_GG(V, Gs, Left, Right, reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
REDUCE_IN_GG(sequent([], .(p(V), Gs)), sequent(Left, Right)) → REDUCE_IN_GG(sequent([], Gs), sequent(Left, .(p(V), Right)))
REDUCE_IN_GG(sequent([], []), sequent(F1, F2)) → U16_GG(F1, F2, intersect_in_gg(F1, F2))
REDUCE_IN_GG(sequent([], []), sequent(F1, F2)) → INTERSECT_IN_GG(F1, F2)
INTERSECT_IN_GG(Xs, .(X3, Ys)) → U17_GG(Xs, X3, Ys, intersect_in_gg(Xs, Ys))
INTERSECT_IN_GG(Xs, .(X3, Ys)) → INTERSECT_IN_GG(Xs, Ys)
INTERSECT_IN_GG(.(X4, Xs), Ys) → U18_GG(X4, Xs, Ys, intersect_in_gg(Xs, Ys))
INTERSECT_IN_GG(.(X4, Xs), Ys) → INTERSECT_IN_GG(Xs, Ys)
U12_GG(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → U13_GG(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U12_GG(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → REDUCE_IN_GG(sequent(Fs, .(G2, Gs)), NF)
U5_GG(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → U6_GG(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U5_GG(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)

The TRS R consists of the following rules:

tautology_in_g(F) → U1_g(F, reduce_in_gg(sequent([], .(F, [])), sequent([], [])))
reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(F1, Fs, Gs, NF, reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(V, Fs, Gs, Left, Right, reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(Fs, G1, Gs, NF, reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(V, Gs, Left, Right, reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(F1, F2, intersect_in_gg(F1, F2))
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg(.(X, X1), .(X, X2))
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(Xs, X3, Ys, intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(X4, Xs, Ys, intersect_in_gg(Xs, Ys))
U18_gg(X4, Xs, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(.(X4, Xs), Ys)
U17_gg(Xs, X3, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(Xs, .(X3, Ys))
U16_gg(F1, F2, intersect_out_gg(F1, F2)) → reduce_out_gg(sequent([], []), sequent(F1, F2))
U15_gg(V, Gs, Left, Right, reduce_out_gg(sequent([], Gs), sequent(Left, .(p(V), Right)))) → reduce_out_gg(sequent([], .(p(V), Gs)), sequent(Left, Right))
U14_gg(Fs, G1, Gs, NF, reduce_out_gg(sequent(.(G1, Fs), Gs), NF)) → reduce_out_gg(sequent(Fs, .(-(G1), Gs)), NF)
U12_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → U13_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U13_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G2, Gs)), NF)) → reduce_out_gg(sequent(Fs, .(*(G1, G2), Gs)), NF)
U11_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, .(G2, Gs))), NF)) → reduce_out_gg(sequent(Fs, .(+(G1, G2), Gs)), NF)
U10_gg(V, Fs, Gs, Left, Right, reduce_out_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right))) → reduce_out_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right))
U9_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(iff(A, B), Gs)), NF)
U8_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(+(-(B), A), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(if(A, B), Gs)), NF)
U7_gg(F1, Fs, Gs, NF, reduce_out_gg(sequent(Fs, .(F1, Gs)), NF)) → reduce_out_gg(sequent(.(-(F1), Fs), Gs), NF)
U5_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → U6_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U6_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F2, Fs), Gs), NF)) → reduce_out_gg(sequent(.(+(F1, F2), Fs), Gs), NF)
U4_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, .(F2, Fs)), Gs), NF)) → reduce_out_gg(sequent(.(*(F1, F2), Fs), Gs), NF)
U3_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)) → reduce_out_gg(sequent(.(iff(A, B), Fs), Gs), NF)
U2_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(+(-(B), A), Fs), Gs), NF)) → reduce_out_gg(sequent(.(if(A, B), Fs), Gs), NF)
U1_g(F, reduce_out_gg(sequent([], .(F, [])), sequent([], []))) → tautology_out_g(F)

The argument filtering Pi contains the following mapping:
tautology_in_g(x1)  =  tautology_in_g(x1)
U1_g(x1, x2)  =  U1_g(x2)
reduce_in_gg(x1, x2)  =  reduce_in_gg(x1, x2)
sequent(x1, x2)  =  sequent(x1, x2)
.(x1, x2)  =  .(x1, x2)
if(x1, x2)  =  if(x1, x2)
U2_gg(x1, x2, x3, x4, x5, x6)  =  U2_gg(x6)
iff(x1, x2)  =  iff(x1, x2)
U3_gg(x1, x2, x3, x4, x5, x6)  =  U3_gg(x6)
*(x1, x2)  =  *(x1, x2)
U4_gg(x1, x2, x3, x4, x5, x6)  =  U4_gg(x6)
+(x1, x2)  =  +(x1, x2)
U5_gg(x1, x2, x3, x4, x5, x6)  =  U5_gg(x2, x3, x4, x5, x6)
-(x1)  =  -(x1)
U7_gg(x1, x2, x3, x4, x5)  =  U7_gg(x5)
U8_gg(x1, x2, x3, x4, x5, x6)  =  U8_gg(x6)
U9_gg(x1, x2, x3, x4, x5, x6)  =  U9_gg(x6)
p(x1)  =  p(x1)
U10_gg(x1, x2, x3, x4, x5, x6)  =  U10_gg(x6)
U11_gg(x1, x2, x3, x4, x5, x6)  =  U11_gg(x6)
U12_gg(x1, x2, x3, x4, x5, x6)  =  U12_gg(x1, x3, x4, x5, x6)
U14_gg(x1, x2, x3, x4, x5)  =  U14_gg(x5)
[]  =  []
U15_gg(x1, x2, x3, x4, x5)  =  U15_gg(x5)
U16_gg(x1, x2, x3)  =  U16_gg(x3)
intersect_in_gg(x1, x2)  =  intersect_in_gg(x1, x2)
intersect_out_gg(x1, x2)  =  intersect_out_gg
U17_gg(x1, x2, x3, x4)  =  U17_gg(x4)
U18_gg(x1, x2, x3, x4)  =  U18_gg(x4)
reduce_out_gg(x1, x2)  =  reduce_out_gg
U13_gg(x1, x2, x3, x4, x5, x6)  =  U13_gg(x6)
U6_gg(x1, x2, x3, x4, x5, x6)  =  U6_gg(x6)
tautology_out_g(x1)  =  tautology_out_g
TAUTOLOGY_IN_G(x1)  =  TAUTOLOGY_IN_G(x1)
U1_G(x1, x2)  =  U1_G(x2)
REDUCE_IN_GG(x1, x2)  =  REDUCE_IN_GG(x1, x2)
U2_GG(x1, x2, x3, x4, x5, x6)  =  U2_GG(x6)
U3_GG(x1, x2, x3, x4, x5, x6)  =  U3_GG(x6)
U4_GG(x1, x2, x3, x4, x5, x6)  =  U4_GG(x6)
U5_GG(x1, x2, x3, x4, x5, x6)  =  U5_GG(x2, x3, x4, x5, x6)
U7_GG(x1, x2, x3, x4, x5)  =  U7_GG(x5)
U8_GG(x1, x2, x3, x4, x5, x6)  =  U8_GG(x6)
U9_GG(x1, x2, x3, x4, x5, x6)  =  U9_GG(x6)
U10_GG(x1, x2, x3, x4, x5, x6)  =  U10_GG(x6)
U11_GG(x1, x2, x3, x4, x5, x6)  =  U11_GG(x6)
U12_GG(x1, x2, x3, x4, x5, x6)  =  U12_GG(x1, x3, x4, x5, x6)
U14_GG(x1, x2, x3, x4, x5)  =  U14_GG(x5)
U15_GG(x1, x2, x3, x4, x5)  =  U15_GG(x5)
U16_GG(x1, x2, x3)  =  U16_GG(x3)
INTERSECT_IN_GG(x1, x2)  =  INTERSECT_IN_GG(x1, x2)
U17_GG(x1, x2, x3, x4)  =  U17_GG(x4)
U18_GG(x1, x2, x3, x4)  =  U18_GG(x4)
U13_GG(x1, x2, x3, x4, x5, x6)  =  U13_GG(x6)
U6_GG(x1, x2, x3, x4, x5, x6)  =  U6_GG(x6)

We have to consider all (P,R,Pi)-chains

(5) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LOPSTR] contains 2 SCCs with 18 less nodes.

(6) Complex Obligation (AND)

(7) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

INTERSECT_IN_GG(.(X4, Xs), Ys) → INTERSECT_IN_GG(Xs, Ys)
INTERSECT_IN_GG(Xs, .(X3, Ys)) → INTERSECT_IN_GG(Xs, Ys)

The TRS R consists of the following rules:

tautology_in_g(F) → U1_g(F, reduce_in_gg(sequent([], .(F, [])), sequent([], [])))
reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(F1, Fs, Gs, NF, reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(V, Fs, Gs, Left, Right, reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(Fs, G1, Gs, NF, reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(V, Gs, Left, Right, reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(F1, F2, intersect_in_gg(F1, F2))
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg(.(X, X1), .(X, X2))
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(Xs, X3, Ys, intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(X4, Xs, Ys, intersect_in_gg(Xs, Ys))
U18_gg(X4, Xs, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(.(X4, Xs), Ys)
U17_gg(Xs, X3, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(Xs, .(X3, Ys))
U16_gg(F1, F2, intersect_out_gg(F1, F2)) → reduce_out_gg(sequent([], []), sequent(F1, F2))
U15_gg(V, Gs, Left, Right, reduce_out_gg(sequent([], Gs), sequent(Left, .(p(V), Right)))) → reduce_out_gg(sequent([], .(p(V), Gs)), sequent(Left, Right))
U14_gg(Fs, G1, Gs, NF, reduce_out_gg(sequent(.(G1, Fs), Gs), NF)) → reduce_out_gg(sequent(Fs, .(-(G1), Gs)), NF)
U12_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → U13_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U13_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G2, Gs)), NF)) → reduce_out_gg(sequent(Fs, .(*(G1, G2), Gs)), NF)
U11_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, .(G2, Gs))), NF)) → reduce_out_gg(sequent(Fs, .(+(G1, G2), Gs)), NF)
U10_gg(V, Fs, Gs, Left, Right, reduce_out_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right))) → reduce_out_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right))
U9_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(iff(A, B), Gs)), NF)
U8_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(+(-(B), A), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(if(A, B), Gs)), NF)
U7_gg(F1, Fs, Gs, NF, reduce_out_gg(sequent(Fs, .(F1, Gs)), NF)) → reduce_out_gg(sequent(.(-(F1), Fs), Gs), NF)
U5_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → U6_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U6_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F2, Fs), Gs), NF)) → reduce_out_gg(sequent(.(+(F1, F2), Fs), Gs), NF)
U4_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, .(F2, Fs)), Gs), NF)) → reduce_out_gg(sequent(.(*(F1, F2), Fs), Gs), NF)
U3_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)) → reduce_out_gg(sequent(.(iff(A, B), Fs), Gs), NF)
U2_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(+(-(B), A), Fs), Gs), NF)) → reduce_out_gg(sequent(.(if(A, B), Fs), Gs), NF)
U1_g(F, reduce_out_gg(sequent([], .(F, [])), sequent([], []))) → tautology_out_g(F)

The argument filtering Pi contains the following mapping:
tautology_in_g(x1)  =  tautology_in_g(x1)
U1_g(x1, x2)  =  U1_g(x2)
reduce_in_gg(x1, x2)  =  reduce_in_gg(x1, x2)
sequent(x1, x2)  =  sequent(x1, x2)
.(x1, x2)  =  .(x1, x2)
if(x1, x2)  =  if(x1, x2)
U2_gg(x1, x2, x3, x4, x5, x6)  =  U2_gg(x6)
iff(x1, x2)  =  iff(x1, x2)
U3_gg(x1, x2, x3, x4, x5, x6)  =  U3_gg(x6)
*(x1, x2)  =  *(x1, x2)
U4_gg(x1, x2, x3, x4, x5, x6)  =  U4_gg(x6)
+(x1, x2)  =  +(x1, x2)
U5_gg(x1, x2, x3, x4, x5, x6)  =  U5_gg(x2, x3, x4, x5, x6)
-(x1)  =  -(x1)
U7_gg(x1, x2, x3, x4, x5)  =  U7_gg(x5)
U8_gg(x1, x2, x3, x4, x5, x6)  =  U8_gg(x6)
U9_gg(x1, x2, x3, x4, x5, x6)  =  U9_gg(x6)
p(x1)  =  p(x1)
U10_gg(x1, x2, x3, x4, x5, x6)  =  U10_gg(x6)
U11_gg(x1, x2, x3, x4, x5, x6)  =  U11_gg(x6)
U12_gg(x1, x2, x3, x4, x5, x6)  =  U12_gg(x1, x3, x4, x5, x6)
U14_gg(x1, x2, x3, x4, x5)  =  U14_gg(x5)
[]  =  []
U15_gg(x1, x2, x3, x4, x5)  =  U15_gg(x5)
U16_gg(x1, x2, x3)  =  U16_gg(x3)
intersect_in_gg(x1, x2)  =  intersect_in_gg(x1, x2)
intersect_out_gg(x1, x2)  =  intersect_out_gg
U17_gg(x1, x2, x3, x4)  =  U17_gg(x4)
U18_gg(x1, x2, x3, x4)  =  U18_gg(x4)
reduce_out_gg(x1, x2)  =  reduce_out_gg
U13_gg(x1, x2, x3, x4, x5, x6)  =  U13_gg(x6)
U6_gg(x1, x2, x3, x4, x5, x6)  =  U6_gg(x6)
tautology_out_g(x1)  =  tautology_out_g
INTERSECT_IN_GG(x1, x2)  =  INTERSECT_IN_GG(x1, x2)

We have to consider all (P,R,Pi)-chains

(8) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(9) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

INTERSECT_IN_GG(.(X4, Xs), Ys) → INTERSECT_IN_GG(Xs, Ys)
INTERSECT_IN_GG(Xs, .(X3, Ys)) → INTERSECT_IN_GG(Xs, Ys)

R is empty.
Pi is empty.
We have to consider all (P,R,Pi)-chains

(10) PiDPToQDPProof (EQUIVALENT transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(11) Obligation:

Q DP problem:
The TRS P consists of the following rules:

INTERSECT_IN_GG(.(X4, Xs), Ys) → INTERSECT_IN_GG(Xs, Ys)
INTERSECT_IN_GG(Xs, .(X3, Ys)) → INTERSECT_IN_GG(Xs, Ys)

R is empty.
Q is empty.
We have to consider all (P,Q,R)-chains.

(12) QDPSizeChangeProof (EQUIVALENT transformation)

By using the subterm criterion [SUBTERM_CRITERION] together with the size-change analysis [AAECC05] we have proven that there are no infinite chains for this DP problem.

From the DPs we obtained the following set of size-change graphs:

  • INTERSECT_IN_GG(.(X4, Xs), Ys) → INTERSECT_IN_GG(Xs, Ys)
    The graph contains the following edges 1 > 1, 2 >= 2

  • INTERSECT_IN_GG(Xs, .(X3, Ys)) → INTERSECT_IN_GG(Xs, Ys)
    The graph contains the following edges 1 >= 1, 2 > 2

(13) YES

(14) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
U5_GG(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(iff(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(*(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, .(F2, Fs)), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(-(F1), Fs), Gs), NF) → REDUCE_IN_GG(sequent(Fs, .(F1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(+(-(B), A), Gs)), NF)
REDUCE_IN_GG(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → REDUCE_IN_GG(sequent(Fs, Gs), sequent(.(p(V), Left), Right))
REDUCE_IN_GG(sequent(Fs, .(iff(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_GG(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
U12_GG(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → REDUCE_IN_GG(sequent(Fs, .(G2, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, .(G2, Gs))), NF)
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(-(G1), Gs)), NF) → REDUCE_IN_GG(sequent(.(G1, Fs), Gs), NF)
REDUCE_IN_GG(sequent([], .(p(V), Gs)), sequent(Left, Right)) → REDUCE_IN_GG(sequent([], Gs), sequent(Left, .(p(V), Right)))

The TRS R consists of the following rules:

tautology_in_g(F) → U1_g(F, reduce_in_gg(sequent([], .(F, [])), sequent([], [])))
reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(F1, Fs, Gs, NF, reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(V, Fs, Gs, Left, Right, reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(Fs, G1, Gs, NF, reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(V, Gs, Left, Right, reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(F1, F2, intersect_in_gg(F1, F2))
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg(.(X, X1), .(X, X2))
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(Xs, X3, Ys, intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(X4, Xs, Ys, intersect_in_gg(Xs, Ys))
U18_gg(X4, Xs, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(.(X4, Xs), Ys)
U17_gg(Xs, X3, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(Xs, .(X3, Ys))
U16_gg(F1, F2, intersect_out_gg(F1, F2)) → reduce_out_gg(sequent([], []), sequent(F1, F2))
U15_gg(V, Gs, Left, Right, reduce_out_gg(sequent([], Gs), sequent(Left, .(p(V), Right)))) → reduce_out_gg(sequent([], .(p(V), Gs)), sequent(Left, Right))
U14_gg(Fs, G1, Gs, NF, reduce_out_gg(sequent(.(G1, Fs), Gs), NF)) → reduce_out_gg(sequent(Fs, .(-(G1), Gs)), NF)
U12_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → U13_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U13_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G2, Gs)), NF)) → reduce_out_gg(sequent(Fs, .(*(G1, G2), Gs)), NF)
U11_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, .(G2, Gs))), NF)) → reduce_out_gg(sequent(Fs, .(+(G1, G2), Gs)), NF)
U10_gg(V, Fs, Gs, Left, Right, reduce_out_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right))) → reduce_out_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right))
U9_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(iff(A, B), Gs)), NF)
U8_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(+(-(B), A), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(if(A, B), Gs)), NF)
U7_gg(F1, Fs, Gs, NF, reduce_out_gg(sequent(Fs, .(F1, Gs)), NF)) → reduce_out_gg(sequent(.(-(F1), Fs), Gs), NF)
U5_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → U6_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U6_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F2, Fs), Gs), NF)) → reduce_out_gg(sequent(.(+(F1, F2), Fs), Gs), NF)
U4_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, .(F2, Fs)), Gs), NF)) → reduce_out_gg(sequent(.(*(F1, F2), Fs), Gs), NF)
U3_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)) → reduce_out_gg(sequent(.(iff(A, B), Fs), Gs), NF)
U2_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(+(-(B), A), Fs), Gs), NF)) → reduce_out_gg(sequent(.(if(A, B), Fs), Gs), NF)
U1_g(F, reduce_out_gg(sequent([], .(F, [])), sequent([], []))) → tautology_out_g(F)

The argument filtering Pi contains the following mapping:
tautology_in_g(x1)  =  tautology_in_g(x1)
U1_g(x1, x2)  =  U1_g(x2)
reduce_in_gg(x1, x2)  =  reduce_in_gg(x1, x2)
sequent(x1, x2)  =  sequent(x1, x2)
.(x1, x2)  =  .(x1, x2)
if(x1, x2)  =  if(x1, x2)
U2_gg(x1, x2, x3, x4, x5, x6)  =  U2_gg(x6)
iff(x1, x2)  =  iff(x1, x2)
U3_gg(x1, x2, x3, x4, x5, x6)  =  U3_gg(x6)
*(x1, x2)  =  *(x1, x2)
U4_gg(x1, x2, x3, x4, x5, x6)  =  U4_gg(x6)
+(x1, x2)  =  +(x1, x2)
U5_gg(x1, x2, x3, x4, x5, x6)  =  U5_gg(x2, x3, x4, x5, x6)
-(x1)  =  -(x1)
U7_gg(x1, x2, x3, x4, x5)  =  U7_gg(x5)
U8_gg(x1, x2, x3, x4, x5, x6)  =  U8_gg(x6)
U9_gg(x1, x2, x3, x4, x5, x6)  =  U9_gg(x6)
p(x1)  =  p(x1)
U10_gg(x1, x2, x3, x4, x5, x6)  =  U10_gg(x6)
U11_gg(x1, x2, x3, x4, x5, x6)  =  U11_gg(x6)
U12_gg(x1, x2, x3, x4, x5, x6)  =  U12_gg(x1, x3, x4, x5, x6)
U14_gg(x1, x2, x3, x4, x5)  =  U14_gg(x5)
[]  =  []
U15_gg(x1, x2, x3, x4, x5)  =  U15_gg(x5)
U16_gg(x1, x2, x3)  =  U16_gg(x3)
intersect_in_gg(x1, x2)  =  intersect_in_gg(x1, x2)
intersect_out_gg(x1, x2)  =  intersect_out_gg
U17_gg(x1, x2, x3, x4)  =  U17_gg(x4)
U18_gg(x1, x2, x3, x4)  =  U18_gg(x4)
reduce_out_gg(x1, x2)  =  reduce_out_gg
U13_gg(x1, x2, x3, x4, x5, x6)  =  U13_gg(x6)
U6_gg(x1, x2, x3, x4, x5, x6)  =  U6_gg(x6)
tautology_out_g(x1)  =  tautology_out_g
REDUCE_IN_GG(x1, x2)  =  REDUCE_IN_GG(x1, x2)
U5_GG(x1, x2, x3, x4, x5, x6)  =  U5_GG(x2, x3, x4, x5, x6)
U12_GG(x1, x2, x3, x4, x5, x6)  =  U12_GG(x1, x3, x4, x5, x6)

We have to consider all (P,R,Pi)-chains

(15) UsableRulesProof (EQUIVALENT transformation)

For (infinitary) constructor rewriting [LOPSTR] we can delete all non-usable rules from R.

(16) Obligation:

Pi DP problem:
The TRS P consists of the following rules:

REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
U5_GG(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(iff(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(*(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, .(F2, Fs)), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(-(F1), Fs), Gs), NF) → REDUCE_IN_GG(sequent(Fs, .(F1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(+(-(B), A), Gs)), NF)
REDUCE_IN_GG(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → REDUCE_IN_GG(sequent(Fs, Gs), sequent(.(p(V), Left), Right))
REDUCE_IN_GG(sequent(Fs, .(iff(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_GG(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
U12_GG(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → REDUCE_IN_GG(sequent(Fs, .(G2, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, .(G2, Gs))), NF)
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(-(G1), Gs)), NF) → REDUCE_IN_GG(sequent(.(G1, Fs), Gs), NF)
REDUCE_IN_GG(sequent([], .(p(V), Gs)), sequent(Left, Right)) → REDUCE_IN_GG(sequent([], Gs), sequent(Left, .(p(V), Right)))

The TRS R consists of the following rules:

reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(A, B, Fs, Gs, NF, reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(F1, Fs, Gs, NF, reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(Fs, A, B, Gs, NF, reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(V, Fs, Gs, Left, Right, reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(Fs, G1, Gs, NF, reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(V, Gs, Left, Right, reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
U2_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(+(-(B), A), Fs), Gs), NF)) → reduce_out_gg(sequent(.(if(A, B), Fs), Gs), NF)
U3_gg(A, B, Fs, Gs, NF, reduce_out_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)) → reduce_out_gg(sequent(.(iff(A, B), Fs), Gs), NF)
U4_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, .(F2, Fs)), Gs), NF)) → reduce_out_gg(sequent(.(*(F1, F2), Fs), Gs), NF)
U5_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F1, Fs), Gs), NF)) → U6_gg(F1, F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U7_gg(F1, Fs, Gs, NF, reduce_out_gg(sequent(Fs, .(F1, Gs)), NF)) → reduce_out_gg(sequent(.(-(F1), Fs), Gs), NF)
U8_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(+(-(B), A), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(if(A, B), Gs)), NF)
U9_gg(Fs, A, B, Gs, NF, reduce_out_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)) → reduce_out_gg(sequent(Fs, .(iff(A, B), Gs)), NF)
U10_gg(V, Fs, Gs, Left, Right, reduce_out_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right))) → reduce_out_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right))
U11_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, .(G2, Gs))), NF)) → reduce_out_gg(sequent(Fs, .(+(G1, G2), Gs)), NF)
U12_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G1, Gs)), NF)) → U13_gg(Fs, G1, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U14_gg(Fs, G1, Gs, NF, reduce_out_gg(sequent(.(G1, Fs), Gs), NF)) → reduce_out_gg(sequent(Fs, .(-(G1), Gs)), NF)
U15_gg(V, Gs, Left, Right, reduce_out_gg(sequent([], Gs), sequent(Left, .(p(V), Right)))) → reduce_out_gg(sequent([], .(p(V), Gs)), sequent(Left, Right))
U6_gg(F1, F2, Fs, Gs, NF, reduce_out_gg(sequent(.(F2, Fs), Gs), NF)) → reduce_out_gg(sequent(.(+(F1, F2), Fs), Gs), NF)
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(F1, F2, intersect_in_gg(F1, F2))
U13_gg(Fs, G1, G2, Gs, NF, reduce_out_gg(sequent(Fs, .(G2, Gs)), NF)) → reduce_out_gg(sequent(Fs, .(*(G1, G2), Gs)), NF)
U16_gg(F1, F2, intersect_out_gg(F1, F2)) → reduce_out_gg(sequent([], []), sequent(F1, F2))
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg(.(X, X1), .(X, X2))
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(Xs, X3, Ys, intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(X4, Xs, Ys, intersect_in_gg(Xs, Ys))
U17_gg(Xs, X3, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(Xs, .(X3, Ys))
U18_gg(X4, Xs, Ys, intersect_out_gg(Xs, Ys)) → intersect_out_gg(.(X4, Xs), Ys)

The argument filtering Pi contains the following mapping:
reduce_in_gg(x1, x2)  =  reduce_in_gg(x1, x2)
sequent(x1, x2)  =  sequent(x1, x2)
.(x1, x2)  =  .(x1, x2)
if(x1, x2)  =  if(x1, x2)
U2_gg(x1, x2, x3, x4, x5, x6)  =  U2_gg(x6)
iff(x1, x2)  =  iff(x1, x2)
U3_gg(x1, x2, x3, x4, x5, x6)  =  U3_gg(x6)
*(x1, x2)  =  *(x1, x2)
U4_gg(x1, x2, x3, x4, x5, x6)  =  U4_gg(x6)
+(x1, x2)  =  +(x1, x2)
U5_gg(x1, x2, x3, x4, x5, x6)  =  U5_gg(x2, x3, x4, x5, x6)
-(x1)  =  -(x1)
U7_gg(x1, x2, x3, x4, x5)  =  U7_gg(x5)
U8_gg(x1, x2, x3, x4, x5, x6)  =  U8_gg(x6)
U9_gg(x1, x2, x3, x4, x5, x6)  =  U9_gg(x6)
p(x1)  =  p(x1)
U10_gg(x1, x2, x3, x4, x5, x6)  =  U10_gg(x6)
U11_gg(x1, x2, x3, x4, x5, x6)  =  U11_gg(x6)
U12_gg(x1, x2, x3, x4, x5, x6)  =  U12_gg(x1, x3, x4, x5, x6)
U14_gg(x1, x2, x3, x4, x5)  =  U14_gg(x5)
[]  =  []
U15_gg(x1, x2, x3, x4, x5)  =  U15_gg(x5)
U16_gg(x1, x2, x3)  =  U16_gg(x3)
intersect_in_gg(x1, x2)  =  intersect_in_gg(x1, x2)
intersect_out_gg(x1, x2)  =  intersect_out_gg
U17_gg(x1, x2, x3, x4)  =  U17_gg(x4)
U18_gg(x1, x2, x3, x4)  =  U18_gg(x4)
reduce_out_gg(x1, x2)  =  reduce_out_gg
U13_gg(x1, x2, x3, x4, x5, x6)  =  U13_gg(x6)
U6_gg(x1, x2, x3, x4, x5, x6)  =  U6_gg(x6)
REDUCE_IN_GG(x1, x2)  =  REDUCE_IN_GG(x1, x2)
U5_GG(x1, x2, x3, x4, x5, x6)  =  U5_GG(x2, x3, x4, x5, x6)
U12_GG(x1, x2, x3, x4, x5, x6)  =  U12_GG(x1, x3, x4, x5, x6)

We have to consider all (P,R,Pi)-chains

(17) PiDPToQDPProof (SOUND transformation)

Transforming (infinitary) constructor rewriting Pi-DP problem [LOPSTR] into ordinary QDP problem [LPAR04] by application of Pi.

(18) Obligation:

Q DP problem:
The TRS P consists of the following rules:

REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
U5_GG(F2, Fs, Gs, NF, reduce_out_gg) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(iff(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(*(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, .(F2, Fs)), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(-(F1), Fs), Gs), NF) → REDUCE_IN_GG(sequent(Fs, .(F1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(+(-(B), A), Gs)), NF)
REDUCE_IN_GG(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → REDUCE_IN_GG(sequent(Fs, Gs), sequent(.(p(V), Left), Right))
REDUCE_IN_GG(sequent(Fs, .(iff(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_GG(Fs, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
U12_GG(Fs, G2, Gs, NF, reduce_out_gg) → REDUCE_IN_GG(sequent(Fs, .(G2, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, .(G2, Gs))), NF)
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(-(G1), Gs)), NF) → REDUCE_IN_GG(sequent(.(G1, Fs), Gs), NF)
REDUCE_IN_GG(sequent([], .(p(V), Gs)), sequent(Left, Right)) → REDUCE_IN_GG(sequent([], Gs), sequent(Left, .(p(V), Right)))

The TRS R consists of the following rules:

reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
U2_gg(reduce_out_gg) → reduce_out_gg
U3_gg(reduce_out_gg) → reduce_out_gg
U4_gg(reduce_out_gg) → reduce_out_gg
U5_gg(F2, Fs, Gs, NF, reduce_out_gg) → U6_gg(reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U7_gg(reduce_out_gg) → reduce_out_gg
U8_gg(reduce_out_gg) → reduce_out_gg
U9_gg(reduce_out_gg) → reduce_out_gg
U10_gg(reduce_out_gg) → reduce_out_gg
U11_gg(reduce_out_gg) → reduce_out_gg
U12_gg(Fs, G2, Gs, NF, reduce_out_gg) → U13_gg(reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U14_gg(reduce_out_gg) → reduce_out_gg
U15_gg(reduce_out_gg) → reduce_out_gg
U6_gg(reduce_out_gg) → reduce_out_gg
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(intersect_in_gg(F1, F2))
U13_gg(reduce_out_gg) → reduce_out_gg
U16_gg(intersect_out_gg) → reduce_out_gg
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(intersect_in_gg(Xs, Ys))
U17_gg(intersect_out_gg) → intersect_out_gg
U18_gg(intersect_out_gg) → intersect_out_gg

The set Q consists of the following terms:

reduce_in_gg(x0, x1)
U2_gg(x0)
U3_gg(x0)
U4_gg(x0)
U5_gg(x0, x1, x2, x3, x4)
U7_gg(x0)
U8_gg(x0)
U9_gg(x0)
U10_gg(x0)
U11_gg(x0)
U12_gg(x0, x1, x2, x3, x4)
U14_gg(x0)
U15_gg(x0)
U6_gg(x0)
U13_gg(x0)
U16_gg(x0)
intersect_in_gg(x0, x1)
U17_gg(x0)
U18_gg(x0)

We have to consider all (P,Q,R)-chains.

(19) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04,JAR06].


The following pairs can be oriented strictly and are deleted.


REDUCE_IN_GG(sequent(Fs, .(iff(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF)
The remaining pairs can at least be oriented weakly.
Used ordering: Matrix interpretation [MATRO] to (N^2, +, *, >=, >) :

POL(REDUCE_IN_GG(x1, x2)) = 0 +
[1,0]
·x1 +
[0,0]
·x2

POL(sequent(x1, x2)) =
/0\
\0/
+
/01\
\00/
·x1 +
/10\
\00/
·x2

POL(.(x1, x2)) =
/0\
\0/
+
/10\
\01/
·x1 +
/10\
\01/
·x2

POL(if(x1, x2)) =
/0\
\0/
+
/10\
\01/
·x1 +
/01\
\10/
·x2

POL(+(x1, x2)) =
/0\
\0/
+
/10\
\01/
·x1 +
/10\
\01/
·x2

POL(-(x1)) =
/0\
\0/
+
/01\
\10/
·x1

POL(U5_GG(x1, x2, x3, x4, x5)) = 0 +
[0,1]
·x1 +
[0,1]
·x2 +
[1,0]
·x3 +
[0,0]
·x4 +
[0,0]
·x5

POL(reduce_in_gg(x1, x2)) =
/0\
\0/
+
/00\
\00/
·x1 +
/00\
\00/
·x2

POL(reduce_out_gg) =
/1\
\1/

POL(iff(x1, x2)) =
/1\
\0/
+
/11\
\11/
·x1 +
/11\
\11/
·x2

POL(*(x1, x2)) =
/0\
\0/
+
/10\
\01/
·x1 +
/10\
\01/
·x2

POL(p(x1)) =
/0\
\0/
+
/00\
\00/
·x1

POL(U12_GG(x1, x2, x3, x4, x5)) = 0 +
[0,1]
·x1 +
[1,0]
·x2 +
[1,0]
·x3 +
[0,0]
·x4 +
[0,0]
·x5

POL([]) =
/0\
\0/

POL(U2_gg(x1)) =
/0\
\1/
+
/00\
\11/
·x1

POL(U3_gg(x1)) =
/0\
\1/
+
/00\
\00/
·x1

POL(U4_gg(x1)) =
/0\
\0/
+
/00\
\00/
·x1

POL(U5_gg(x1, x2, x3, x4, x5)) =
/0\
\0/
+
/11\
\10/
·x1 +
/11\
\10/
·x2 +
/10\
\00/
·x3 +
/00\
\11/
·x4 +
/00\
\00/
·x5

POL(U7_gg(x1)) =
/0\
\1/
+
/00\
\10/
·x1

POL(U8_gg(x1)) =
/1\
\1/
+
/01\
\00/
·x1

POL(U9_gg(x1)) =
/0\
\0/
+
/00\
\11/
·x1

POL(U10_gg(x1)) =
/0\
\0/
+
/00\
\00/
·x1

POL(U11_gg(x1)) =
/0\
\0/
+
/00\
\00/
·x1

POL(U12_gg(x1, x2, x3, x4, x5)) =
/0\
\0/
+
/00\
\00/
·x1 +
/10\
\00/
·x2 +
/11\
\00/
·x3 +
/00\
\10/
·x4 +
/00\
\10/
·x5

POL(U14_gg(x1)) =
/0\
\0/
+
/00\
\00/
·x1

POL(U15_gg(x1)) =
/0\
\1/
+
/00\
\00/
·x1

POL(U16_gg(x1)) =
/0\
\0/
+
/00\
\01/
·x1

POL(intersect_in_gg(x1, x2)) =
/0\
\1/
+
/00\
\10/
·x1 +
/01\
\01/
·x2

POL(U13_gg(x1)) =
/0\
\0/
+
/00\
\00/
·x1

POL(U6_gg(x1)) =
/0\
\0/
+
/00\
\00/
·x1

POL(intersect_out_gg) =
/1\
\0/

POL(U17_gg(x1)) =
/1\
\0/
+
/11\
\00/
·x1

POL(U18_gg(x1)) =
/0\
\1/
+
/00\
\11/
·x1

The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
none

(20) Obligation:

Q DP problem:
The TRS P consists of the following rules:

REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
U5_GG(F2, Fs, Gs, NF, reduce_out_gg) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(iff(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(*(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, .(F2, Fs)), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(-(F1), Fs), Gs), NF) → REDUCE_IN_GG(sequent(Fs, .(F1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(+(-(B), A), Gs)), NF)
REDUCE_IN_GG(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → REDUCE_IN_GG(sequent(Fs, Gs), sequent(.(p(V), Left), Right))
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_GG(Fs, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
U12_GG(Fs, G2, Gs, NF, reduce_out_gg) → REDUCE_IN_GG(sequent(Fs, .(G2, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, .(G2, Gs))), NF)
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(-(G1), Gs)), NF) → REDUCE_IN_GG(sequent(.(G1, Fs), Gs), NF)
REDUCE_IN_GG(sequent([], .(p(V), Gs)), sequent(Left, Right)) → REDUCE_IN_GG(sequent([], Gs), sequent(Left, .(p(V), Right)))

The TRS R consists of the following rules:

reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
U2_gg(reduce_out_gg) → reduce_out_gg
U3_gg(reduce_out_gg) → reduce_out_gg
U4_gg(reduce_out_gg) → reduce_out_gg
U5_gg(F2, Fs, Gs, NF, reduce_out_gg) → U6_gg(reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U7_gg(reduce_out_gg) → reduce_out_gg
U8_gg(reduce_out_gg) → reduce_out_gg
U9_gg(reduce_out_gg) → reduce_out_gg
U10_gg(reduce_out_gg) → reduce_out_gg
U11_gg(reduce_out_gg) → reduce_out_gg
U12_gg(Fs, G2, Gs, NF, reduce_out_gg) → U13_gg(reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U14_gg(reduce_out_gg) → reduce_out_gg
U15_gg(reduce_out_gg) → reduce_out_gg
U6_gg(reduce_out_gg) → reduce_out_gg
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(intersect_in_gg(F1, F2))
U13_gg(reduce_out_gg) → reduce_out_gg
U16_gg(intersect_out_gg) → reduce_out_gg
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(intersect_in_gg(Xs, Ys))
U17_gg(intersect_out_gg) → intersect_out_gg
U18_gg(intersect_out_gg) → intersect_out_gg

The set Q consists of the following terms:

reduce_in_gg(x0, x1)
U2_gg(x0)
U3_gg(x0)
U4_gg(x0)
U5_gg(x0, x1, x2, x3, x4)
U7_gg(x0)
U8_gg(x0)
U9_gg(x0)
U10_gg(x0)
U11_gg(x0)
U12_gg(x0, x1, x2, x3, x4)
U14_gg(x0)
U15_gg(x0)
U6_gg(x0)
U13_gg(x0)
U16_gg(x0)
intersect_in_gg(x0, x1)
U17_gg(x0)
U18_gg(x0)

We have to consider all (P,Q,R)-chains.

(21) QDPQMonotonicMRRProof (EQUIVALENT transformation)

By using the Q-monotonic rule removal processor with the following ordering, at least one Dependency Pair or term rewrite system rule of this QDP problem can be strictly oriented such that it always occurs at a strongly monotonic position in a (P,Q,R)-chain.
Strictly oriented dependency pairs:

REDUCE_IN_GG(sequent(.(*(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, .(F2, Fs)), Gs), NF)
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_GG(Fs, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
REDUCE_IN_GG(sequent(Fs, .(*(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, Gs)), NF)


Used ordering: Polynomial interpretation [POLO]:

POL(*(x1, x2)) = 1 + x1 + x2   
POL(+(x1, x2)) = x1 + x2   
POL(-(x1)) = x1   
POL(.(x1, x2)) = 2·x1 + x2   
POL(REDUCE_IN_GG(x1, x2)) = x1   
POL(U10_gg(x1)) = 0   
POL(U11_gg(x1)) = 0   
POL(U12_GG(x1, x2, x3, x4, x5)) = x1 + 2·x2 + x3   
POL(U12_gg(x1, x2, x3, x4, x5)) = 0   
POL(U13_gg(x1)) = 0   
POL(U14_gg(x1)) = 0   
POL(U15_gg(x1)) = 0   
POL(U16_gg(x1)) = 0   
POL(U17_gg(x1)) = 0   
POL(U18_gg(x1)) = 0   
POL(U2_gg(x1)) = 0   
POL(U3_gg(x1)) = 0   
POL(U4_gg(x1)) = 0   
POL(U5_GG(x1, x2, x3, x4, x5)) = 2·x1 + x2 + x3   
POL(U5_gg(x1, x2, x3, x4, x5)) = 0   
POL(U6_gg(x1)) = 0   
POL(U7_gg(x1)) = 0   
POL(U8_gg(x1)) = 0   
POL(U9_gg(x1)) = 0   
POL([]) = 0   
POL(if(x1, x2)) = x1 + x2   
POL(iff(x1, x2)) = 1 + 2·x1 + 2·x2   
POL(intersect_in_gg(x1, x2)) = 0   
POL(intersect_out_gg) = 0   
POL(p(x1)) = 0   
POL(reduce_in_gg(x1, x2)) = 0   
POL(reduce_out_gg) = 0   
POL(sequent(x1, x2)) = x1 + x2   

(22) Obligation:

Q DP problem:
The TRS P consists of the following rules:

REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
U5_GG(F2, Fs, Gs, NF, reduce_out_gg) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(iff(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(-(F1), Fs), Gs), NF) → REDUCE_IN_GG(sequent(Fs, .(F1, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(+(-(B), A), Gs)), NF)
REDUCE_IN_GG(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → REDUCE_IN_GG(sequent(Fs, Gs), sequent(.(p(V), Left), Right))
U12_GG(Fs, G2, Gs, NF, reduce_out_gg) → REDUCE_IN_GG(sequent(Fs, .(G2, Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, .(G2, Gs))), NF)
REDUCE_IN_GG(sequent(Fs, .(-(G1), Gs)), NF) → REDUCE_IN_GG(sequent(.(G1, Fs), Gs), NF)
REDUCE_IN_GG(sequent([], .(p(V), Gs)), sequent(Left, Right)) → REDUCE_IN_GG(sequent([], Gs), sequent(Left, .(p(V), Right)))

The TRS R consists of the following rules:

reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
U2_gg(reduce_out_gg) → reduce_out_gg
U3_gg(reduce_out_gg) → reduce_out_gg
U4_gg(reduce_out_gg) → reduce_out_gg
U5_gg(F2, Fs, Gs, NF, reduce_out_gg) → U6_gg(reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U7_gg(reduce_out_gg) → reduce_out_gg
U8_gg(reduce_out_gg) → reduce_out_gg
U9_gg(reduce_out_gg) → reduce_out_gg
U10_gg(reduce_out_gg) → reduce_out_gg
U11_gg(reduce_out_gg) → reduce_out_gg
U12_gg(Fs, G2, Gs, NF, reduce_out_gg) → U13_gg(reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U14_gg(reduce_out_gg) → reduce_out_gg
U15_gg(reduce_out_gg) → reduce_out_gg
U6_gg(reduce_out_gg) → reduce_out_gg
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(intersect_in_gg(F1, F2))
U13_gg(reduce_out_gg) → reduce_out_gg
U16_gg(intersect_out_gg) → reduce_out_gg
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(intersect_in_gg(Xs, Ys))
U17_gg(intersect_out_gg) → intersect_out_gg
U18_gg(intersect_out_gg) → intersect_out_gg

The set Q consists of the following terms:

reduce_in_gg(x0, x1)
U2_gg(x0)
U3_gg(x0)
U4_gg(x0)
U5_gg(x0, x1, x2, x3, x4)
U7_gg(x0)
U8_gg(x0)
U9_gg(x0)
U10_gg(x0)
U11_gg(x0)
U12_gg(x0, x1, x2, x3, x4)
U14_gg(x0)
U15_gg(x0)
U6_gg(x0)
U13_gg(x0)
U16_gg(x0)
intersect_in_gg(x0, x1)
U17_gg(x0)
U18_gg(x0)

We have to consider all (P,Q,R)-chains.

(23) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 1 SCC with 1 less node.

(24) Obligation:

Q DP problem:
The TRS P consists of the following rules:

REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
U5_GG(F2, Fs, Gs, NF, reduce_out_gg) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(iff(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(+(-(B), A), Gs)), NF)
REDUCE_IN_GG(sequent(.(-(F1), Fs), Gs), NF) → REDUCE_IN_GG(sequent(Fs, .(F1, Gs)), NF)
REDUCE_IN_GG(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → REDUCE_IN_GG(sequent(Fs, Gs), sequent(.(p(V), Left), Right))
REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, .(G2, Gs))), NF)
REDUCE_IN_GG(sequent(Fs, .(-(G1), Gs)), NF) → REDUCE_IN_GG(sequent(.(G1, Fs), Gs), NF)
REDUCE_IN_GG(sequent([], .(p(V), Gs)), sequent(Left, Right)) → REDUCE_IN_GG(sequent([], Gs), sequent(Left, .(p(V), Right)))

The TRS R consists of the following rules:

reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
U2_gg(reduce_out_gg) → reduce_out_gg
U3_gg(reduce_out_gg) → reduce_out_gg
U4_gg(reduce_out_gg) → reduce_out_gg
U5_gg(F2, Fs, Gs, NF, reduce_out_gg) → U6_gg(reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U7_gg(reduce_out_gg) → reduce_out_gg
U8_gg(reduce_out_gg) → reduce_out_gg
U9_gg(reduce_out_gg) → reduce_out_gg
U10_gg(reduce_out_gg) → reduce_out_gg
U11_gg(reduce_out_gg) → reduce_out_gg
U12_gg(Fs, G2, Gs, NF, reduce_out_gg) → U13_gg(reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U14_gg(reduce_out_gg) → reduce_out_gg
U15_gg(reduce_out_gg) → reduce_out_gg
U6_gg(reduce_out_gg) → reduce_out_gg
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(intersect_in_gg(F1, F2))
U13_gg(reduce_out_gg) → reduce_out_gg
U16_gg(intersect_out_gg) → reduce_out_gg
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(intersect_in_gg(Xs, Ys))
U17_gg(intersect_out_gg) → intersect_out_gg
U18_gg(intersect_out_gg) → intersect_out_gg

The set Q consists of the following terms:

reduce_in_gg(x0, x1)
U2_gg(x0)
U3_gg(x0)
U4_gg(x0)
U5_gg(x0, x1, x2, x3, x4)
U7_gg(x0)
U8_gg(x0)
U9_gg(x0)
U10_gg(x0)
U11_gg(x0)
U12_gg(x0, x1, x2, x3, x4)
U14_gg(x0)
U15_gg(x0)
U6_gg(x0)
U13_gg(x0)
U16_gg(x0)
intersect_in_gg(x0, x1)
U17_gg(x0)
U18_gg(x0)

We have to consider all (P,Q,R)-chains.

(25) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04,JAR06].


The following pairs can be oriented strictly and are deleted.


REDUCE_IN_GG(sequent(.(iff(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(-(F1), Fs), Gs), NF) → REDUCE_IN_GG(sequent(Fs, .(F1, Gs)), NF)
REDUCE_IN_GG(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → REDUCE_IN_GG(sequent(Fs, Gs), sequent(.(p(V), Left), Right))
REDUCE_IN_GG(sequent(Fs, .(-(G1), Gs)), NF) → REDUCE_IN_GG(sequent(.(G1, Fs), Gs), NF)
REDUCE_IN_GG(sequent([], .(p(V), Gs)), sequent(Left, Right)) → REDUCE_IN_GG(sequent([], Gs), sequent(Left, .(p(V), Right)))
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(*(x1, x2)) = 0   
POL(+(x1, x2)) = x1 + x2   
POL(-(x1)) = 1 + x1   
POL(.(x1, x2)) = x1 + x2   
POL(REDUCE_IN_GG(x1, x2)) = x1   
POL(U10_gg(x1)) = 0   
POL(U11_gg(x1)) = 0   
POL(U12_gg(x1, x2, x3, x4, x5)) = 0   
POL(U13_gg(x1)) = 0   
POL(U14_gg(x1)) = 0   
POL(U15_gg(x1)) = 0   
POL(U16_gg(x1)) = 0   
POL(U17_gg(x1)) = 0   
POL(U18_gg(x1)) = 1   
POL(U2_gg(x1)) = 0   
POL(U3_gg(x1)) = 0   
POL(U4_gg(x1)) = 0   
POL(U5_GG(x1, x2, x3, x4, x5)) = x1 + x2 + x3   
POL(U5_gg(x1, x2, x3, x4, x5)) = 0   
POL(U6_gg(x1)) = 0   
POL(U7_gg(x1)) = 0   
POL(U8_gg(x1)) = 0   
POL(U9_gg(x1)) = 0   
POL([]) = 0   
POL(if(x1, x2)) = 1 + x1 + x2   
POL(iff(x1, x2)) = 1 + x1 + x2   
POL(intersect_in_gg(x1, x2)) = 1 + x1   
POL(intersect_out_gg) = 0   
POL(p(x1)) = 1   
POL(reduce_in_gg(x1, x2)) = 0   
POL(reduce_out_gg) = 0   
POL(sequent(x1, x2)) = x1 + x2   

The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
none

(26) Obligation:

Q DP problem:
The TRS P consists of the following rules:

REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
U5_GG(F2, Fs, Gs, NF, reduce_out_gg) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(+(-(B), A), Gs)), NF)
REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, .(G2, Gs))), NF)

The TRS R consists of the following rules:

reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
U2_gg(reduce_out_gg) → reduce_out_gg
U3_gg(reduce_out_gg) → reduce_out_gg
U4_gg(reduce_out_gg) → reduce_out_gg
U5_gg(F2, Fs, Gs, NF, reduce_out_gg) → U6_gg(reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U7_gg(reduce_out_gg) → reduce_out_gg
U8_gg(reduce_out_gg) → reduce_out_gg
U9_gg(reduce_out_gg) → reduce_out_gg
U10_gg(reduce_out_gg) → reduce_out_gg
U11_gg(reduce_out_gg) → reduce_out_gg
U12_gg(Fs, G2, Gs, NF, reduce_out_gg) → U13_gg(reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U14_gg(reduce_out_gg) → reduce_out_gg
U15_gg(reduce_out_gg) → reduce_out_gg
U6_gg(reduce_out_gg) → reduce_out_gg
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(intersect_in_gg(F1, F2))
U13_gg(reduce_out_gg) → reduce_out_gg
U16_gg(intersect_out_gg) → reduce_out_gg
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(intersect_in_gg(Xs, Ys))
U17_gg(intersect_out_gg) → intersect_out_gg
U18_gg(intersect_out_gg) → intersect_out_gg

The set Q consists of the following terms:

reduce_in_gg(x0, x1)
U2_gg(x0)
U3_gg(x0)
U4_gg(x0)
U5_gg(x0, x1, x2, x3, x4)
U7_gg(x0)
U8_gg(x0)
U9_gg(x0)
U10_gg(x0)
U11_gg(x0)
U12_gg(x0, x1, x2, x3, x4)
U14_gg(x0)
U15_gg(x0)
U6_gg(x0)
U13_gg(x0)
U16_gg(x0)
intersect_in_gg(x0, x1)
U17_gg(x0)
U18_gg(x0)

We have to consider all (P,Q,R)-chains.

(27) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04,JAR06].


The following pairs can be oriented strictly and are deleted.


REDUCE_IN_GG(sequent(Fs, .(+(G1, G2), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(G1, .(G2, Gs))), NF)
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(*(x1, x2)) = 0   
POL(+(x1, x2)) = 1 + x1   
POL(-(x1)) = 0   
POL(.(x1, x2)) = x1   
POL(REDUCE_IN_GG(x1, x2)) = x1   
POL(U10_gg(x1)) = 0   
POL(U11_gg(x1)) = 0   
POL(U12_gg(x1, x2, x3, x4, x5)) = 0   
POL(U13_gg(x1)) = 0   
POL(U14_gg(x1)) = 0   
POL(U15_gg(x1)) = 0   
POL(U16_gg(x1)) = 0   
POL(U17_gg(x1)) = 0   
POL(U18_gg(x1)) = 0   
POL(U2_gg(x1)) = 0   
POL(U3_gg(x1)) = 0   
POL(U4_gg(x1)) = 0   
POL(U5_GG(x1, x2, x3, x4, x5)) = x3   
POL(U5_gg(x1, x2, x3, x4, x5)) = 0   
POL(U6_gg(x1)) = 0   
POL(U7_gg(x1)) = 0   
POL(U8_gg(x1)) = 0   
POL(U9_gg(x1)) = 0   
POL([]) = 0   
POL(if(x1, x2)) = 1 + x2   
POL(iff(x1, x2)) = 0   
POL(intersect_in_gg(x1, x2)) = 0   
POL(intersect_out_gg) = 0   
POL(p(x1)) = 0   
POL(reduce_in_gg(x1, x2)) = 0   
POL(reduce_out_gg) = 0   
POL(sequent(x1, x2)) = x2   

The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
none

(28) Obligation:

Q DP problem:
The TRS P consists of the following rules:

REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
U5_GG(F2, Fs, Gs, NF, reduce_out_gg) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)
REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(+(-(B), A), Gs)), NF)

The TRS R consists of the following rules:

reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
U2_gg(reduce_out_gg) → reduce_out_gg
U3_gg(reduce_out_gg) → reduce_out_gg
U4_gg(reduce_out_gg) → reduce_out_gg
U5_gg(F2, Fs, Gs, NF, reduce_out_gg) → U6_gg(reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U7_gg(reduce_out_gg) → reduce_out_gg
U8_gg(reduce_out_gg) → reduce_out_gg
U9_gg(reduce_out_gg) → reduce_out_gg
U10_gg(reduce_out_gg) → reduce_out_gg
U11_gg(reduce_out_gg) → reduce_out_gg
U12_gg(Fs, G2, Gs, NF, reduce_out_gg) → U13_gg(reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U14_gg(reduce_out_gg) → reduce_out_gg
U15_gg(reduce_out_gg) → reduce_out_gg
U6_gg(reduce_out_gg) → reduce_out_gg
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(intersect_in_gg(F1, F2))
U13_gg(reduce_out_gg) → reduce_out_gg
U16_gg(intersect_out_gg) → reduce_out_gg
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(intersect_in_gg(Xs, Ys))
U17_gg(intersect_out_gg) → intersect_out_gg
U18_gg(intersect_out_gg) → intersect_out_gg

The set Q consists of the following terms:

reduce_in_gg(x0, x1)
U2_gg(x0)
U3_gg(x0)
U4_gg(x0)
U5_gg(x0, x1, x2, x3, x4)
U7_gg(x0)
U8_gg(x0)
U9_gg(x0)
U10_gg(x0)
U11_gg(x0)
U12_gg(x0, x1, x2, x3, x4)
U14_gg(x0)
U15_gg(x0)
U6_gg(x0)
U13_gg(x0)
U16_gg(x0)
intersect_in_gg(x0, x1)
U17_gg(x0)
U18_gg(x0)

We have to consider all (P,Q,R)-chains.

(29) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04,JAR06].


The following pairs can be oriented strictly and are deleted.


REDUCE_IN_GG(sequent(Fs, .(if(A, B), Gs)), NF) → REDUCE_IN_GG(sequent(Fs, .(+(-(B), A), Gs)), NF)
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(*(x1, x2)) = 0   
POL(+(x1, x2)) = 0   
POL(-(x1)) = 0   
POL(.(x1, x2)) = x1   
POL(REDUCE_IN_GG(x1, x2)) = x1   
POL(U10_gg(x1)) = 0   
POL(U11_gg(x1)) = 0   
POL(U12_gg(x1, x2, x3, x4, x5)) = 0   
POL(U13_gg(x1)) = 0   
POL(U14_gg(x1)) = 0   
POL(U15_gg(x1)) = 0   
POL(U16_gg(x1)) = 0   
POL(U17_gg(x1)) = 0   
POL(U18_gg(x1)) = 0   
POL(U2_gg(x1)) = 0   
POL(U3_gg(x1)) = 0   
POL(U4_gg(x1)) = 0   
POL(U5_GG(x1, x2, x3, x4, x5)) = x3   
POL(U5_gg(x1, x2, x3, x4, x5)) = 0   
POL(U6_gg(x1)) = 0   
POL(U7_gg(x1)) = 0   
POL(U8_gg(x1)) = 0   
POL(U9_gg(x1)) = 0   
POL([]) = 0   
POL(if(x1, x2)) = 1   
POL(iff(x1, x2)) = 0   
POL(intersect_in_gg(x1, x2)) = 0   
POL(intersect_out_gg) = 0   
POL(p(x1)) = 0   
POL(reduce_in_gg(x1, x2)) = 0   
POL(reduce_out_gg) = 0   
POL(sequent(x1, x2)) = x2   

The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
none

(30) Obligation:

Q DP problem:
The TRS P consists of the following rules:

REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
U5_GG(F2, Fs, Gs, NF, reduce_out_gg) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)

The TRS R consists of the following rules:

reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
U2_gg(reduce_out_gg) → reduce_out_gg
U3_gg(reduce_out_gg) → reduce_out_gg
U4_gg(reduce_out_gg) → reduce_out_gg
U5_gg(F2, Fs, Gs, NF, reduce_out_gg) → U6_gg(reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U7_gg(reduce_out_gg) → reduce_out_gg
U8_gg(reduce_out_gg) → reduce_out_gg
U9_gg(reduce_out_gg) → reduce_out_gg
U10_gg(reduce_out_gg) → reduce_out_gg
U11_gg(reduce_out_gg) → reduce_out_gg
U12_gg(Fs, G2, Gs, NF, reduce_out_gg) → U13_gg(reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U14_gg(reduce_out_gg) → reduce_out_gg
U15_gg(reduce_out_gg) → reduce_out_gg
U6_gg(reduce_out_gg) → reduce_out_gg
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(intersect_in_gg(F1, F2))
U13_gg(reduce_out_gg) → reduce_out_gg
U16_gg(intersect_out_gg) → reduce_out_gg
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(intersect_in_gg(Xs, Ys))
U17_gg(intersect_out_gg) → intersect_out_gg
U18_gg(intersect_out_gg) → intersect_out_gg

The set Q consists of the following terms:

reduce_in_gg(x0, x1)
U2_gg(x0)
U3_gg(x0)
U4_gg(x0)
U5_gg(x0, x1, x2, x3, x4)
U7_gg(x0)
U8_gg(x0)
U9_gg(x0)
U10_gg(x0)
U11_gg(x0)
U12_gg(x0, x1, x2, x3, x4)
U14_gg(x0)
U15_gg(x0)
U6_gg(x0)
U13_gg(x0)
U16_gg(x0)
intersect_in_gg(x0, x1)
U17_gg(x0)
U18_gg(x0)

We have to consider all (P,Q,R)-chains.

(31) QDPOrderProof (EQUIVALENT transformation)

We use the reduction pair processor [LPAR04,JAR06].


The following pairs can be oriented strictly and are deleted.


REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_GG(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
REDUCE_IN_GG(sequent(.(+(F1, F2), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(F1, Fs), Gs), NF)
The remaining pairs can at least be oriented weakly.
Used ordering: Polynomial interpretation [POLO]:

POL(*(x1, x2)) = 0   
POL(+(x1, x2)) = 1 + x1 + x2   
POL(-(x1)) = 0   
POL(.(x1, x2)) = x1 + x2   
POL(REDUCE_IN_GG(x1, x2)) = x1 + x2   
POL(U10_gg(x1)) = 0   
POL(U11_gg(x1)) = 0   
POL(U12_gg(x1, x2, x3, x4, x5)) = 0   
POL(U13_gg(x1)) = 0   
POL(U14_gg(x1)) = 0   
POL(U15_gg(x1)) = 0   
POL(U16_gg(x1)) = 1   
POL(U17_gg(x1)) = 0   
POL(U18_gg(x1)) = 0   
POL(U2_gg(x1)) = 0   
POL(U3_gg(x1)) = 0   
POL(U4_gg(x1)) = 0   
POL(U5_GG(x1, x2, x3, x4, x5)) = x1 + x2 + x3 + x4   
POL(U5_gg(x1, x2, x3, x4, x5)) = 0   
POL(U6_gg(x1)) = 0   
POL(U7_gg(x1)) = 0   
POL(U8_gg(x1)) = 0   
POL(U9_gg(x1)) = 0   
POL([]) = 0   
POL(if(x1, x2)) = 1 + x1 + x2   
POL(iff(x1, x2)) = 0   
POL(intersect_in_gg(x1, x2)) = 1 + x1 + x2   
POL(intersect_out_gg) = 0   
POL(p(x1)) = 0   
POL(reduce_in_gg(x1, x2)) = 1 + x2   
POL(reduce_out_gg) = 0   
POL(sequent(x1, x2)) = x1 + x2   

The following usable rules [FROCOS05] with respect to the argument filtering of the ordering [JAR06] were oriented:
none

(32) Obligation:

Q DP problem:
The TRS P consists of the following rules:

U5_GG(F2, Fs, Gs, NF, reduce_out_gg) → REDUCE_IN_GG(sequent(.(F2, Fs), Gs), NF)
REDUCE_IN_GG(sequent(.(if(A, B), Fs), Gs), NF) → REDUCE_IN_GG(sequent(.(+(-(B), A), Fs), Gs), NF)

The TRS R consists of the following rules:

reduce_in_gg(sequent(.(if(A, B), Fs), Gs), NF) → U2_gg(reduce_in_gg(sequent(.(+(-(B), A), Fs), Gs), NF))
reduce_in_gg(sequent(.(iff(A, B), Fs), Gs), NF) → U3_gg(reduce_in_gg(sequent(.(*(if(A, B), if(B, A)), Fs), Gs), NF))
reduce_in_gg(sequent(.(*(F1, F2), Fs), Gs), NF) → U4_gg(reduce_in_gg(sequent(.(F1, .(F2, Fs)), Gs), NF))
reduce_in_gg(sequent(.(+(F1, F2), Fs), Gs), NF) → U5_gg(F2, Fs, Gs, NF, reduce_in_gg(sequent(.(F1, Fs), Gs), NF))
reduce_in_gg(sequent(.(-(F1), Fs), Gs), NF) → U7_gg(reduce_in_gg(sequent(Fs, .(F1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(if(A, B), Gs)), NF) → U8_gg(reduce_in_gg(sequent(Fs, .(+(-(B), A), Gs)), NF))
reduce_in_gg(sequent(Fs, .(iff(A, B), Gs)), NF) → U9_gg(reduce_in_gg(sequent(Fs, .(*(if(A, B), if(B, A)), Gs)), NF))
reduce_in_gg(sequent(.(p(V), Fs), Gs), sequent(Left, Right)) → U10_gg(reduce_in_gg(sequent(Fs, Gs), sequent(.(p(V), Left), Right)))
reduce_in_gg(sequent(Fs, .(+(G1, G2), Gs)), NF) → U11_gg(reduce_in_gg(sequent(Fs, .(G1, .(G2, Gs))), NF))
reduce_in_gg(sequent(Fs, .(*(G1, G2), Gs)), NF) → U12_gg(Fs, G2, Gs, NF, reduce_in_gg(sequent(Fs, .(G1, Gs)), NF))
reduce_in_gg(sequent(Fs, .(-(G1), Gs)), NF) → U14_gg(reduce_in_gg(sequent(.(G1, Fs), Gs), NF))
reduce_in_gg(sequent([], .(p(V), Gs)), sequent(Left, Right)) → U15_gg(reduce_in_gg(sequent([], Gs), sequent(Left, .(p(V), Right))))
U2_gg(reduce_out_gg) → reduce_out_gg
U3_gg(reduce_out_gg) → reduce_out_gg
U4_gg(reduce_out_gg) → reduce_out_gg
U5_gg(F2, Fs, Gs, NF, reduce_out_gg) → U6_gg(reduce_in_gg(sequent(.(F2, Fs), Gs), NF))
U7_gg(reduce_out_gg) → reduce_out_gg
U8_gg(reduce_out_gg) → reduce_out_gg
U9_gg(reduce_out_gg) → reduce_out_gg
U10_gg(reduce_out_gg) → reduce_out_gg
U11_gg(reduce_out_gg) → reduce_out_gg
U12_gg(Fs, G2, Gs, NF, reduce_out_gg) → U13_gg(reduce_in_gg(sequent(Fs, .(G2, Gs)), NF))
U14_gg(reduce_out_gg) → reduce_out_gg
U15_gg(reduce_out_gg) → reduce_out_gg
U6_gg(reduce_out_gg) → reduce_out_gg
reduce_in_gg(sequent([], []), sequent(F1, F2)) → U16_gg(intersect_in_gg(F1, F2))
U13_gg(reduce_out_gg) → reduce_out_gg
U16_gg(intersect_out_gg) → reduce_out_gg
intersect_in_gg(.(X, X1), .(X, X2)) → intersect_out_gg
intersect_in_gg(Xs, .(X3, Ys)) → U17_gg(intersect_in_gg(Xs, Ys))
intersect_in_gg(.(X4, Xs), Ys) → U18_gg(intersect_in_gg(Xs, Ys))
U17_gg(intersect_out_gg) → intersect_out_gg
U18_gg(intersect_out_gg) → intersect_out_gg

The set Q consists of the following terms:

reduce_in_gg(x0, x1)
U2_gg(x0)
U3_gg(x0)
U4_gg(x0)
U5_gg(x0, x1, x2, x3, x4)
U7_gg(x0)
U8_gg(x0)
U9_gg(x0)
U10_gg(x0)
U11_gg(x0)
U12_gg(x0, x1, x2, x3, x4)
U14_gg(x0)
U15_gg(x0)
U6_gg(x0)
U13_gg(x0)
U16_gg(x0)
intersect_in_gg(x0, x1)
U17_gg(x0)
U18_gg(x0)

We have to consider all (P,Q,R)-chains.

(33) DependencyGraphProof (EQUIVALENT transformation)

The approximation of the Dependency Graph [LPAR04,FROCOS05,EDGSTAR] contains 0 SCCs with 2 less nodes.

(34) TRUE